package com.z.ssmdemo.log.factory;

/**
 * @author haonan.zhang
 */
public interface ELogger {

    /**
     * desc
     * 用户法说明：
     * 级别一共有6种，但是实际项目中只会用到4种。
     * debug：用来记录逻辑判断参数以及数据状态和数据值，
     * 说只比啊点就是越详细越好，因为debug主要用在开发
     * 环境和测试环境，其实开发环境就算不写也没关系
     * ，因为开发的都是在打断电。
     * info: 主要用来记录逻辑判断，因为很多实际线上环境
     * 用的就是这一级别，记录关键地方，对项目影响也不是特
     * 别大，当然在特殊情况下也可以使用warning
     * warning： 主要用来记录一些可能使系统某一部分的
     * 功能不可用，但又不影响整体项目的运行，开发觉得这个
     * 数据可以继续流下去，就可以记录下，同时给用户一个反馈
     * error： 直接报错，
     */

    void info(String message, Throwable t);

    void info(String message);

    void info(String format, Object... arguments);

    void info(String format, Object arg1, Object arg2);

    void error(String message);

    void error(String format, Object arg1, Object arg2);

    void error(String format, Object... arguments);

    void error(String message, Throwable t);

    /**
     * debug level
     *
     * @param message
     * @param t
     */
    void debug(String message, Throwable t);

    /**
     * warn level
     *
     * @param message
     * @param t
     */
    void warn(String message, Throwable t);

    /**
     * debug level
     *
     * @param message
     */
    void debug(String message);

    /**
     * warn level
     *
     * @param message
     */
    void warn(String message);

}
